<%@page import="entidades.excepciones.RepeatedWOException"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<%@ page import="util.*" %>
<%@ page import="entidades.*" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.Date" %>
<%@ page import="java.util.HashMap" %>
<%@ page import="java.util.Map" %>
<%@page import="entidades.*"%>

<html>
<head>

<%@ include file="jspf/head.jspf" %>
<script type="text/javascript" src="js/sp/orden-trabajo-form.jsp"></script>
<script type="text/javascript" src="js/sp/orden-alta.jsp"></script>

<style type="text/css">
	.requiere_autorizar { color: #a00000; }
</style>

</head>
<body>

<%@ include file="jspf/header.jspf" %>

<% if( Sesiones.isLogueado(session) ) { %>

<%
try{
String accion = request.getParameter("accion");

if(accion != null)
	{
	if(accion.compareTo("guardar") == 0)
		{
		// Obtengo los datos de la orden de venta.
		String excedidas = request.getParameter("ordenesExcedidas");
                String opcionElegida = request.getParameter("opcionelegida");
                Map<String, String> mapExcedidas = new HashMap<String, String>();
                if (excedidas.length() > 0 && !excedidas.contains(",")){
                    mapExcedidas.put(excedidas, excedidas);
                }else if (excedidas.length() > 0 && excedidas.contains(",")){
                    String[] idsExcedidas = excedidas.split(",");
                    for(int i=0; i<idsExcedidas.length; i++) {
                        mapExcedidas.put(idsExcedidas[i], idsExcedidas[i]);
                    }
                }
                OrdenVenta venta = new OrdenVenta();
		venta.setAltaUsuarioId(Sesiones.getUsuario(session).getId());
		venta.setAltaFechaHora(new Date());
		venta.setEstadoId(EstadoVenta.CARGADO);
		venta.setIdentificador(request.getParameter("identificador"));
		venta.setInterior(request.getParameter("interior"));
		venta.setBarniz(request.getParameter("barniz"));
		venta.setLacaUvId(request.getParameter("laca_uv"));
		venta.setCantidadColores(request.getParameter("cantidad_colores"));
		venta.setLineaId(request.getParameter("linea"));
		venta.setTipoPapelId(request.getParameter("tipo_papel_" + request.getParameter("linea")));
		venta.setManijaId(request.getParameter("manija_" + request.getParameter("linea")));
		venta.setPaisId(request.getParameter("pais_id"));
		boolean fantasia = request.getParameter("fantasia") != null;
		String logotipo = request.getParameter("logotipo" + (fantasia? "_fantasia" : ""));
		venta.setLogotipoId( Logotipo.getId(logotipo, fantasia));

                
		// Obtengo los datos de las ordenes de trabajo.
		String ordenes = request.getParameter("ordenes");
                //Valido ordenes de trabajo antes de guardar orden de venta
                if(ordenes != null && ordenes.length() > 0){
			String ots[] = ordenes.split(",");
			for(int i=0; i<ots.length; i++){
				int ot = Integer.parseInt(ots[i]);
				String identificador = request.getParameter("ot"+ot+"_identificador");
                                OrdenTrabajo.checkIdentificador(identificador);
                        }
                }
                
		venta.guardar();

                String msg = "";
		if(ordenes != null && ordenes.length() > 0)
			{
			String ots[] = ordenes.split(",");
			for(int i=0; i<ots.length; i++)
				{
				int ot = Integer.parseInt(ots[i]);
				String identificador = request.getParameter("ot"+ot+"_identificador");
                                String soloImpresion = request.getParameter("ot"+ot+"_solo_impresion");

                                if (!(mapExcedidas.containsKey(identificador) && opcionElegida.equals("3"))){
                                    OrdenTrabajo trabajo = new OrdenTrabajo();
                                    trabajo.setOrdenVenta(venta);
                                    trabajo.setOrdenVentaId(venta.getId());
                                    if (soloImpresion != null){
                                        trabajo.setSoloImpresion(true);
                                    }
                                if (mapExcedidas.containsKey(identificador) && opcionElegida.equals("2")){
                                     trabajo.setEstadoId(EstadoTrabajo.DEMORADA);
                                    }else{
                                    if (trabajo.getOrdenVenta().getCantidadColores() == 0){
                                        trabajo.setEstadoId(EstadoTrabajo.IMPRESO);
                                        }else{
                                        trabajo.setEstadoId(EstadoTrabajo.PENDIENTE);
                                      }
                                 }
                                    trabajo.setFormatoId(request.getParameter("ot"+ot+"_formato_" + request.getParameter("linea")));

                                    if (trabajo.getOrdenVenta().getLineaId() == Linea.JUPITER || trabajo.getOrdenVenta().getLineaId() == Linea.TIERRA_ARTESANAL){
                                    try{
                                        int identificadorInt = Integer.parseInt(identificador) + 1;
                                        identificador = String.valueOf(identificadorInt);
                                    }catch(Exception e){}
                                }
                                    trabajo.setIdentificador(identificador);
                                    trabajo.setCantidad(request.getParameter("ot"+ot+"_cantidad"));
                                    trabajo.calcularMetros();
                                    trabajo.setFechaPrometida(request.getParameter("ot"+ot+"_fecha_inicial"));
                                    if (!(mapExcedidas.containsKey(identificador) && opcionElegida.equals("2"))){
                                        if (!trabajo.isSoloImpresion()){
                                                int cicloNewlongId = Integer.parseInt( request.getParameter("ot"+ot+"_ciclo_id").split("-")[0] );
                                                trabajo.setCicloNewlongId(cicloNewlongId);
                                            }
                                        if (!request.getParameter("ot"+ot+"_ciclo_id").split("-")[1].equals("undefined")){
                                            int cicloUtecoId = Integer.parseInt( request.getParameter("ot"+ot+"_ciclo_id").split("-")[1] );
                                            trabajo.setCicloUtecoId(cicloUtecoId);
                                        }

                                    }
                                if (trabajo.getCicloNewlong() == null && trabajo.getCicloUteco() == null){
                                    trabajo.guardarCiclosNulos();
                                }else{
                                    trabajo.guardar();
                                }
                                if (trabajo.getCicloUteco() != null && trabajo.getCicloUteco().getCapacidadDisponible() < 0){
                                    msg += "La orden de trabajo " + trabajo.getIdentificador() + " tiene asignado un ciclo uteco saturado<br/>" ;
                                    }
				}
                            }
			}
                
                /*Recalculo Acarreo para ciclos newlong*/
                ControlDeCiclosNewlong control = new ControlDeCiclosNewlong();
                control.recalcularAcarreoDeCiclos();
                
		if (!msg.equals("")){
                    out.println("<div id=\"dialog_error\" title=\"Operacion exitosa\">La orden fue dada de alta exitosamente.<br/>" + msg + "</div>");
                }else{
                    out.println("<div id=\"dialog_error\" title=\"Operacion exitosa\">La orden fue dada de alta exitosamente.</div>");
                }

            }
	}
}
catch(RepeatedWOException rwoe){
    out.println("<div id=\"dialog_error\" title=\"Error\">"+rwoe.getMessage()+"</div>");
}
catch(Exception e) {out.println("<div id=\"dialog_error\" title=\"Error\">"+e+"</div>");}
%>

<br/>

<h1>Alta de Ordenes</h1>

<br/>

<form action="" method="post" id="form_abm" accept-charset="utf-8">
<input type="hidden" name="accion" value="orden-alta"/>
<input type="hidden" name="ordenes" value=""/>
<input type="hidden" name="ordenesExcedidas" value=""/>
<input type="hidden" name="opcionelegida" value=""/>
<input type="hidden" name="fantasiaCheck" value="<%= OrdenVenta.getLastFantasia()%>"/>
<input type="hidden" name="idJupiter" value="<%= OrdenTrabajo.getLastByLineaId(4)%>"/>
<input type="hidden" name="idTierraArtesanal" value="<%= OrdenTrabajo.getLastByLineaId(5)%>"/>

<center><table class="formulario" id="table_abm">
	<tbody id="table_abm_tbody">
	<tr>
		<td><fieldset>
			<legend>Orden de venta</legend>
			<table style="width:100%;">
				<tr>
					<td class="label">Sales order</td>
					<td class="input"><input type="text" name="identificador" value=""/></td>
					<td class="label">Pais</td>
					<td class="input">
						<select name="pais_id">
                                                    <option value="">Seleccionar</option>
						<% {
						List<Pais> paises = Pais.listar();
						for(int p=0; p<paises.size(); p++)
							{%><option value="<%= paises.get(p).getId() %>"><%= paises.get(p).getNombre() %></option><%}
						} %>
						</select>
					</td>
				</tr>
				<tr>
					<td class="label">Linea</td>
					<td class="input">
						<select name="linea">
                                                    <option value="">Seleccionar</option>
							<%
							List<Linea> lineas = Linea.listar();
							for(int i=0; i<lineas.size(); i++)
								{ %> <option value="<%= lineas.get(i).getId() %>" data-cantidad_minima="<%= lineas.get(i).getCantidadMinima() %>"><%= lineas.get(i).getDescriptor() %></option> <% }
							%>
						</select>
					</td>
				</tr>
				<tr>
					<td class="label">Logotipo</td>
					<td class="input">
						<input type="text" name="logotipo" size="20" value=""/>
						<% if( Sesiones.tienePermiso(session, "ordenes_alta", "fantasia") ) { %>
						<input type="text" name="logotipo_fantasia" size="20" value=""/>
						<% } %>
					</td>
					<% if( Sesiones.tienePermiso(session, "ordenes_alta", "fantasia") ) { %>
					<td class="label">Fantasía</td>
					<td class="input"><input type="checkbox" name="fantasia" value="value"/></td>
					<% } %>
				</tr>
				<tr>
					<td class="label">Tipo papel</td>
					<td class="input">
						<% {
						for(int l=0; l<lineas.size(); l++)
							{
							%><select name="tipo_papel_<%= lineas.get(l).getId() %>" class="tipo_papel">  <%
                                                        List<TipoPapel> tipos = TipoPapel.listar(lineas.get(l).getId(), true);
							for(int i=0; i<tipos.size(); i++)
								{ %><option value="<%= tipos.get(i).getId() %>"><%= tipos.get(i).getDescriptor() %></option><% }
							%></select><%
							}
						} %>
					</td>
					<td class="label">Manija</td>
					<td class="input">
						<% {
						for(int l=0; l<lineas.size(); l++)
							{
							%><select name="manija_<%= lineas.get(l).getId() %>" class="manija"> <%
							List<Manija> tipos = Manija.listar(lineas.get(l).getId(), true);
							for(int i=0; i<tipos.size(); i++)
								{ %><option value="<%= tipos.get(i).getId() %>"><%= tipos.get(i).getDescriptor() %></option><% }
							%></select><%
							}
						} %>
					</td>
				</tr>
				<tr>
					<td class="label">Interior</td>
					<td class="input">
						<select name="interior">
                                                        <option value="">Seleccionar</option>
							<option value="false">No</option>
							<option value="true">Si</option>
						</select>
					</td>
					<td class="label">Laca UV</td>
					<td class="input">
						<select name="laca_uv">
                                                        <option value="">Seleccionar</option>
							<% {
							List<LacaUv> lacas = LacaUv.listar();
							for(int i=0; i<lacas.size(); i++)
								{ %> <option value="<%= lacas.get(i).getId() %>"><%= lacas.get(i).getDescriptor() %></option>'; <% }
							} %>
						</select>
					</td>
				</tr>
				<tr>
					<td class="label">Barniz</td>
					<td class="input">
						<select name="barniz">
                                                        <option value="">Seleccionar</option>
							<option value="false">No</option>
							<option value="true">Si</option>
						</select>
					</td>
					<td class="label">Cantidad <br/>de colores</td>
					<td class="input">
						<select name="cantidad_colores">
                                                        <option value="">Seleccionar</option>
							<option value="0">0</option>
							<option value="1">1</option>
							<option value="2">2</option>
							<option value="3">3</option>
							<option value="4">4</option>
							<option value="5">5</option>
							<option value="6">6</option>
						</select>
					</td>
				</tr>
			</table>
		</fieldset></td>
	</tr>
	</tbody>
	<tfoot>
	<tr>
		<th class="input" style="text-align:center;">
			<div style="text-align: right; font-size: 0.8em; padding-right: 8px;">
				<a href="#" id="button_agregar_ot"><img src="icon/plus.png" alt="" title="Agregar orden de trabajo"/> <span style="position:relative; bottom:3px;">Agregar OT</span></a>
				&nbsp;&nbsp;
				<a href="#" id="button_remover_ot"><img src="icon/minus.png" alt="" title="Remover orden de trabajo"/> <span style="position:relative; bottom:3px;">Eliminar OT</span></a>
			</div>
			<br/>
			<button name="estimar"><img src="icon/date.png" alt="" title="Estimar fechas de entrega"/> <span>Estimar</span></button>
			<% if( Sesiones.tienePermiso(session, "ordenes_alta", "write") ) { %>
			<button name="guardar"><img src="icon/save.png" alt="" title="Guardar orden"/> <span>Guardar</span></button>
			<% } %>
		</th>
	</tr>
	</tfoot>
</table></center>

</form>

<br/>

<% } %>

<%@ include file="jspf/footer.jspf" %>

</body>
</html>
